<?php
use com\masfletes\db\DBUtil;
/**
 * Clase que extiende Model3_Controller. 
 * Su propósito es manejar peticiones y respuestas en formato JSON
 */
class JController extends Model3_Controller
{   
    private $defaultDb = "DefaultDb";
    /*@var Boolean*/
    //private $responseJSON;
    
    public function init()
    {
        $this->setResponseJSON(TRUE);        
    }
    
    public function setResponseJSON($param){
        if($param==true){
            header('Content-type: application/json; charset=utf-8');
            $this->responseJSON = TRUE;
        }else{
           header('Content-type: text/html;application/xhtml+xml;application/xml; charset=utf-8',true); 
           $this->responseJSON = FALSE;
        }
    }

    /**
     *
     * @param string $dbName
     * @return Doctrine\ORM\EntityManager Returns the underlying connection from DBAL
     * 
     */
    public function getConnection()
    {
        $em = false;
        $dbs = Model3_Registry::getInstance()->get('databases');
        if(array_key_exists($this->defaultDb, $dbs) == true)
            $em = $dbs[$this->defaultDb];
        return $em->getConnection()->getWrappedConnection();
    }
    
    public function permitirAcceso($sessionId,$pantalla,$permiso){
      if(!DBUtil::validarPermiso($this->getConnection($this->defaultDb), $sessionId,$pantalla,$permiso)){
          throw new Exception('No tiene permisos para ejecutar esta acción', 0);       
          return;
      }
    }
    
    public function getArrayValue($key,$arr){
        return array_key_exists($key,$arr)? $arr[$key] : null;
    }
}